// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import 'echarts'
import ECharts from 'vue-echarts'

//引入echarts
Vue.component('ECharts',ECharts)

import NProgress from 'nprogress' 
import 'nprogress/nprogress.css'// nprogress样式文件cnpm install vuex

import Vuex from 'vuex';
import store from './vuex/store'
Vue.use(Vuex);
Vue.prototype.$store = store;

//导入elementui
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI);

import myUtil from './util/MyUtil.js'
Vue.prototype.$myUtil = myUtil

import VueCookies from 'vue-cookies'
Vue.use(VueCookies)


// 路由跳转之前
router.beforeEach((to, from , next) => {
  // 开启进度条
  NProgress.start();
  // 这个一定要加，没有next()页面不会跳转的。这部分还不清楚的去翻一下官网就明白了


  //  1. 如果在执行路由跳转前，发现localstorage中token无值则

  if(to.path == "/" || to.path == "/register"){// 访问的是登录界面
    next();
  }else if(window.localStorage.getItem("token")){
    next();
  }else{
    ElementUI.Notification.error({
      title: '系统异常',
      message: "操作非法！请先登录再进行访问！"
    });

    // 使用路由跳转到一个404界面
    
    // 返回登录页面
    router.push("/");

  }
  
});


//当路由跳转结束后
router.afterEach(() => {  
  // 关闭进度条
  NProgress.done()
})


// #取消 Vue 所有的日志与警告 - 开发不要配，生产环境配
// Vue.config.silent = true


// #配置是否允许 vue-devtools 检查代码 - 开发不要配，生产环境配
// Vue.config.devtools = true 

// #指定组件的渲染和观察期间未捕获错误的处理函数-全局异常处理回调
Vue.config.errorHandler = function (err, vm, info){} 

// #设置为 false 以阻止 vue 在启动时生成生产提示 - 开发不要配true，生产环境配
// Vue.config.productionTip = false


/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
